<?php 
// load error handling sequence 
require_once ('error_handler.php'); 
// load configuration 
require_once ('config.php'); 
 
// class stores Friendly web application functionality 
class Friendly 
{ 
  // stores the database connection 
  private $mMysqli; 
  
  // constructor opens database connection 
  function __construct() 
  { 
    $this->mMysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD,  
                                                     DB_DATABASE); 
  } 
 
  // generate news message 
  public function getNews() 
  { 
    // this will store the news line 
    $news = 'No news for today.'; 
    // SQL that selects two random users from the database. 
    $query = 'SELECT user_name FROM users ' . 
             'ORDER BY RAND() ' . 
             'LIMIT 2'; 
    // execute the query 
    $result = $this->mMysqli->query($query);   
    // retrieve the user rows 
    $row1 = $result->fetch_array(MYSQLI_ASSOC); 
    $row2 = $result->fetch_array(MYSQLI_ASSOC); 
    // close the input stream 
    $result->close();   
    // generate the news 
    if (!$row1 || !$row2) 
    { 
      $news = 'The project needs more users!'; 
    } 
    else 
    {       // create HTML-formatted news message 
      $name1 = '<b>' . $row1['user_name'] . '</b>'; 
      $name2 = '<b>' . $row2['user_name'] . '</b>'; 
      $randNum = $this->getRandomNumber(); 
      $news = 'User ' . $name1 . ' works with user ' . $name2 .  
              ' at project #' . $randNum . '.'; 
    } 
    // output the news line 
    return $news; 
  } 
   
  // returns a random number between 1 and 100  
  private function getRandomNumber() 
  { 
    // delays execution for quarter of a second 
    usleep(250000); 
    // holds the remote server address and parameters 
    $serverAddress = 'http://www.random.org/cgi-bin/randnum'; 
    $serverParams = 'num=1&min=1&max=100'; 
    // retrieve the random number from remote server 
    $randomNumber = file_get_contents($serverAddress . '?' .  
                                                      $serverParams); 
    // output the random number 
    return trim($randomNumber); 
  } 
 
  // destructor closes database connection 
  function __destruct() 
  { 
    $this->mMysqli->close();       
  } 
} 
?> 